
import axios from 'axios';
import { ElMessage } from 'element-plus'


const service = axios.create({
    baseURL: 'http://81.71.70.7:5000/',
    timeout: 5000
})

// axios拦截器
// 拦截器顾名思义即为拦截，对所有的请求和响应进行拦截。
// 方法：
// axios.interceptor.request.use()请求拦截器
// axios.interceptor.response.use()响应拦截器
// 两个拦截器使用方法一致，都接收两个参数：

// 参数1：拦截成功回调函数
// 参数2：拦截失败回调函数。
// 注意，无论请求还是响应拦截，拦截完了要return 返回拦截的请求体和响应体，不然就不会执行后边的请求和响应结果操作了。


//添加请求拦截器,比如获取token的值 ,是在发送请求之前就要获取到
//在发送请求之前做些什么
service.interceptors.request.use(
    res => {
        
        //看下是否能够获取到token
        const token = localStorage.getItem('jwtToken');   // 从本地存储中获取 JWT 令牌
        // console.log(token)
        console.log("请求拦截器中添加token,token:",token);
        
        // if (token) {
        //     res.headers['Authorization'] = `Bearer ${token}`; // 在请求头中添加 Authorization 标头
        // }
        return res;
    },
    error => {
        return Promise.reject(error);
    }
)
//添加相应拦截器
service.interceptors.response.use(
    res => {
        //对相应的数据 做操作
        console.log("获取返回回来预处理结果:", res);

        return res
    },
    err => {   //拦截失败的情况处理
        /***** 接收到异常响应的处理开始 *****/
        if (err && err.response) {

            switch(err.response.status){
                case 400:
                    console.log(err)
                    ElMessage({
                        message: "请求错误",
                        type: 'error',
                        center: true
                    });
                    break;
                case 401:
                    ElMessage({
                        message: "未授权，请重新登录",
                        type: 'error',
                        center: true

                    });
                    break;
                case 403:
                    ElMessage({
                        message: "拒绝访问",
                        type: 'error',
                        center: true

                    });
                    break;

                case 404:
                    ElMessage({
                        message: "请求错误,未找到该资源",
                        type: 'error',
                        center: true

                    });
                    window.location.href = '/NotFound';
                    break;


            }
            
        }

        else
        {
            if (JSON.stringify(err).includes('timeout')) {
                console.log("相应超时，请刷新页面！")
            }
        }
        

    })


export default service;